#include "myset.h"
#include "mymap.h"
#include <time.h>

// void testRBTree1()
// {
// 	std::vector<int> v = { 6,2,3,7,5,9,1,26,16,14,12,84,62,18,77,36,68,66,72,15,47 };
//
// 	real::RBTree<int, int> rbt;
// 	for (auto e : v)
// 	{
// 		rbt.Insert(std::make_pair(e,e));
// 		rbt.InOrder();
// 		cout << "IsBalancedTree: " << rbt.IsBalancedTree() << endl;
// 		cout << "Height: " << rbt.Height() << endl;
//
// 	}
// 	rbt.InOrder();
// 	cout << "IsBalancedTree: " << rbt.IsBalancedTree() << endl;
//
// 	/*rbt._root->_right->_col = real::BLACK;
// 	cout << "IsBalancedTree: " << rbt.IsBalancedTree() << endl;*/
// }
//
// void testRBTree2()
// {
// 	srand((unsigned int)time(nullptr));
// 	real::RBTree<int, int> rbt;
// 	clock_t start = clock();
// 	for (int i = 0; i < 100000; ++i)
// 	{
// 		int randval = rand();
// 		rbt.Insert(std::make_pair(randval, randval));
// 	}
// 	clock_t end = clock();
//
// 	cout << "IsBalancedTree: " << rbt.IsBalancedTree() << endl;
// 	cout << "Height: " << rbt.Height() << endl;
// 	cout << "Time: " << (end-start) << endl;
//
// 	rbt.InOrder();
//
// }

void testRBTree3()
{
	std::vector<int> v = { 6,2,3,7,5,9,1,26,16,14,12,84,62,18,77,36,68,66,72,15,47 };

	real::set<int> myset;
	for (auto e : v)
	{
		myset.insert(e);
	}
	for (auto e: myset) {
		cout << (e) << "->";
	}
	cout << endl;

	real::set<int>::const_iterator it = myset.begin();
	while (it != myset.end()) {
		cout << (*it) << "->";
		++it;
	}
	cout << endl;

}

void testMap()
{
	real::map<std::string, int> mymap;
	mymap.insert({"aa", 10});
	mymap.insert({"ab", 4});
	mymap.insert({"ac", 9});
	mymap["xiangzuo"] = 256; 
	mymap["xiangqian"] = 156; 
	mymap["xianghou"] = 116; 
	mymap["ac"] = 90; 
	for(auto e: mymap)
	{
		cout << "K:" << e.first << " V:" << e.second << "-> ";
	}
	cout << endl;
}

int main()
{
	// testRBTree1();
	// testRBTree2();
	// testRBTree3();
	testMap();
	return 0;
}